home *** CD-ROM | disk | FTP | other *** search
- ;void cursor_up(rows);
- ; unsigned short rows;
-
- EXTRN _memory_model:byte
- EXTRN _video_page:byte
-
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS:_TEXT
- PUBLIC _cursor_up
- _cursor_up proc near
- push bp ;save BP
- mov bp,sp ;set stack frame
- cmp _memory_model,0 ;near or far?
- jle begin ;jump if near
- inc bp ;else add 2 to BP
- inc bp ;
- begin: mov bh,_video_page ;get page number
- mov ah,3 ;func to get cursor pos
- int 10h ;ROW in DH, COL in DL
- mov ah,2 ;func to set cursor
- sub dh,[bp+4] ;subtract offset
- cmp dh,24 ;in range?
- jna L1 ;jump ahead if so
- mov dh,0 ;else top row
- L1: int 10H ;reset cursor
- pop bp ;restore BP
- cmp _memory_model,0 ;quit
- jle quit ;
- db 0CBh ;RET far
- quit: ret ;RET near
- _cursor_up endp
- _TEXT ENDS
- END